package com.kexilo.core.common.validation;

import com.kexilo.core.common.annotation.Phone;
import com.kexilo.core.common.utils.StringUtils;
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;

/**
 * 手机号验证器
 * 
 * @author Kexilo
 */
public class PhoneValidator implements ConstraintValidator<Phone, String> {
    
    /**
     * 手机号正则表达式
     * 支持中国大陆手机号格式
     */
    private static final String PHONE_PATTERN = "^1[3-9]\\d{9}$";
    
    @Override
    public void initialize(Phone constraintAnnotation) {
        // 初始化方法，可以获取注解的属性
    }
    
    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        // 空值由@NotNull或@NotBlank来验证
        if (StringUtils.isEmpty(value)) {
            return true;
        }
        
        return value.matches(PHONE_PATTERN);
    }
}
